Classe T< System.Collections.Generic.HashSet>

Observação

Este artigo fornece observações complementares à documentação de referência para esta API.

A HashSet<T> classe fornece operações de conjunto de alto desempenho. Um conjunto é uma coleção que não contém elementos duplicados e cujos elementos não estão em nenhuma ordem específica.

A capacidade de um HashSet<T> objeto é o número de elementos que o objeto pode conter. A capacidade de um HashSet<T> objeto aumenta automaticamente à medida que elementos são adicionados ao objeto.

A classe HashSet<T> é baseada no modelo de conjuntos matemáticos e proporciona operações de conjunto de alto desempenho, semelhantes ao acesso às chaves das coleções Dictionary<TKey,TValue> ou Hashtable. Em termos simples, a HashSet<T> classe pode ser pensada como uma Dictionary<TKey,TValue> coleção sem valores.

Uma HashSet<T> coleção não é classificada e não pode conter elementos duplicados. Se a duplicação de ordem ou elemento for mais importante do que o desempenho para seu aplicativo, considere usar a List<T> classe junto com o Sort método.

HashSet<T> Fornece muitas operações matemáticas de conjuntos, como adição de conjuntos (uniões) e subtração de conjuntos. A tabela a seguir lista as operações fornecidas HashSet<T> e seus equivalentes matemáticos.

Operação HashSet Equivalente matemático
UnionWith Adição de união ou conjunto
IntersectWith Intersecção
ExceptWith Definir subtração
SymmetricExceptWith Diferença simétrica

Além das operações de conjunto listadas, a classe também fornece métodos para determinar a HashSet<T> igualdade de conjuntos, a sobreposição de conjuntos e se um conjunto é um subconjunto ou superconjunto de outro conjunto.

Apenas .NET Framework: Para objetos muito grandes HashSet<T> , pode aumentar a capacidade máxima para 2 mil milhões de elementos num sistema de 64 bits definindo o enabled atributo do <gcAllowVeryLargeObjects> elemento de configuração para true no ambiente de execução.

A classe HashSet<T> implementa a interface ISet<T>.

Operações de conjunto HashSet e LINQ

LINQ fornece acesso às operações de conjunto Distinct, Union, Intersect, e Except em qualquer fonte de dados que implemente as interfaces IEnumerable ou IQueryable. HashSet<T> fornece uma coleção maior e mais robusta de operações definidas. Por exemplo, HashSet<T> fornece comparações como IsSubsetOf e IsSupersetOf.

A diferença primária entre as operações de conjunto LINQ e as operações HashSet<T> é que as operações de conjunto LINQ sempre retornam uma nova coleção IEnumerable<T>, enquanto os métodos HashSet<T> equivalentes modificam a coleção atual.

Normalmente, se você precisar criar um novo conjunto ou se seu aplicativo precisar acessar apenas as operações de conjunto fornecidas, usar operações de conjunto LINQ em qualquer IEnumerable<T> coleção ou matriz será suficiente. No entanto, se seu aplicativo requer acesso a operações de conjunto adicionais, ou se não é desejável ou necessário criar uma nova coleção, use a HashSet<T> classe.

A tabela a seguir mostra as operações do HashSet<T> conjunto LINQ e suas operações equivalentes.

Operação HashSet Equivalente LINQ
UnionWith Union
IntersectWith Intersect
ExceptWith Except
Não fornecido. Distinct
SymmetricExceptWith Não fornecido.
Overlaps Não fornecido.
IsSubsetOf Não fornecido.
IsProperSubsetOf Não fornecido.
IsSupersetOf Não fornecido.
IsProperSupersetOf Não fornecido.
SetEquals Não fornecido.